package com.winit.project.service;

import com.alibaba.fastjson.JSONObject;
import com.winit.project.core.bean.EditionInfo;
import com.winit.project.core.bean.PackageTypeEnum;
import com.winit.project.core.bean.ProjectInfo;

import java.util.List;

/**
 * Created by wangjian on 16/6/20.
 */
public interface ProjectService {

    /**
     * 获取工程列表
     * @param trunkName
     * trunkName 为空时 查询所有工程  不为空时  查询该主干工程下工程列表
     * @param typeEnum
     * releaseType 工程类型  all/maven_war/maven_jar/php
     * @param onlyTrunk 是否只显示主干工程
     * @param isShowJar 是否显示jar工程
     * @return
     */
    List<ProjectInfo> getProjectList(String trunkName,PackageTypeEnum typeEnum, boolean onlyTrunk, boolean isShowJar) throws Exception;

    List<EditionInfo> getProjectEditionList(String projectName, boolean isShowAllE, boolean hasDefault) throws Exception;

    /**
     * 获取工程信息
     * @param projectName
     * @return
     */
    ProjectInfo getProjectInfo(String projectName) throws Exception;

    boolean isProjectExist(String projectName) throws Exception;

    boolean isEditionExist(String projectName,String editionNum) throws Exception;

    /**
     * 获取当前主干工程测试通过的工程名及版本号
     * @param trunkName 主干工程名
     * @return {"projectName":"sms_sms","editionNum":"20160202-020103"}
     */
    JSONObject getPassProjectAndEdition(String trunkName) throws Exception;
}
